import axios from 'axios'
import { Toast } from 'vant'
import Router from '@/router/index.js'
import { getLocal, removeLocal } from '@/utils/local.js'
import Store from '@/store'
// import Vue from 'vue'
// 修改axios的默认配制
const _fetch = axios.create({
  baseURL: process.env.VUE_APP_URL
})
// axios.defaults.baseURL = process.env.VUE_APP_URL
// 请求拦截器
_fetch.interceptors.request.use(
  function (config) {
    if (config.needToken) {
      // 判断axios请求是否需要token，需要则加上，不需要就不加
      config.headers.authorization = `Bearer ${getLocal()}`
    }
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)
// 响应拦截器
_fetch.interceptors.response.use(
  function (res) {
    if (res.data.code === 200) {
      // 没有错误直接正常返回数据
      return res
    } else {
      // 判断token是否有异常
      if (res.data.code === 401 || res.data.code === 403) {
        // 有些异常
        // 1、提示 2、跳转 3、删除token 4、终止.then
        Toast.fail(res.data.message)
        removeLocal()
        Router.push('/login?redirect=' + window.location.href.split('#')[1])
        Store.commit('setIsLogin', false)
        return Promise.reject(new Error(res.data.message))
      }
      // 弹除提示信息，并且阻止请求的.then执行
      Toast.fail(res.data.message)
      // 阻止请求的.then执行
      return Promise.reject(new Error(res.data.message))
    }
  },
  function (error) {
    return Promise.reject(error)
  }
)
// Vue.prototype.$axios = axios
export default _fetch
